#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Create by zhang
# Create on 2022/6/25 19:50
from domain.report.entity.report_agg import ReportAgg


class CashRatios:
    """
    与现金流量表相关的财务比率
    """
    def __init__(self, report:ReportAgg):
        self.report = report

    def operating_cash_flow_to_liabilities(self):
        """
        现金与负债总额比率（operating cash flow to liabilities）是指经营活动现金净流量与平均总负债额的比率。
        现金与负债总额比率 = 经营活动现金净流量/平均总负债
        现金与负债总额比率反映了企业依据自身创造现金的能力所能够承担债务规模的大小。
        一般而言，该比率越高，企业承担债务的能力就越强；该比率越低，企业承担债务的能力就越弱。
        """
        return self.report.operating_cash_flow_to_liabilities()

    def operating_cash_flow_to_oprating_assets(self):
        """
        经营活动资产现金回收比率（operating cash flow to oprating assets）
        经营活动资产现金回收比率 = 经营活动现金净流量/平均经营性资产
        该比率反映了一定时期经营性资产创造现金的能力
        与同行平均数值相比，该数值越大，表明企业经营性资产整体获现质量越好
        """
        return self.report.operating_cash_flow_to_oprating_assets()

    def operating_cash_flow_to_capital_expenditure(self):
        """
        再投资比率（operating cash flow to capital expenditure）是指企业一定时期经营活动产生的现金净流量与资本支出（主要是固定资产投资）的比率。
        再投资比率 = 经营活动现金净流量/资本性支出
        在投资比率反映了企业当期经营活动产生的现金净流量是否足以支付资本性支出所需现金。
        如果这一比率过低，则表明企业的经营活动不能满足企业资本性支出的现金需求，需要依靠筹资活动产生的现金流入来补充资金的不足。
        """
        return self.report.cash.operating_cash_flow_to_capital_expenditure()

    def operating_cash_flow_to_expired_debts_and_interests(self):
        """
        到期债务本息偿付比率（operating cash flow to expired debts and interests）是指企业的经营活动现金净流量对本期到期债务和利息支出的现金满足程度
        到期债务本息偿付比率 = 经营活动现金净流量/（本期到期债务 + 利息支出）
        到期债务本息偿付比率越大，表明企业偿付到期债务的能力就越强；
        到期债务本息偿付比率小于1，则表明企业经营活动产生的现金不足以偿付到期债务本息，企业必须依靠投资活动与筹资活动的现金流入才能足够偿还债务。
        """
        return self.report.cash.operating_cash_flow_to_expired_debts_and_interests()

    def cash_paid_div_sale(self):
        """
        现金购销比率（cash paid to suppliers / cash from sales）
        现金购销比率 = 购买商品、接受劳务支付的现金/销售商品、出售劳务收到的现金
        再企业正常经营的情况下，这一比率应该对应于利润表中营业成本率（成本费用总额/营业收入总额）。这一比率过大或过小，都应该引起读者的注意。
        当然，企业所处发展阶段不同，信用政策不同，市场环境不同，此比率所揭示的意义也不同。
        """
        return self.report.cash.cash_paid_div_sale()

    def cash_inflow_from_operations_to_sales(self):
        """
        收入现金比率（cash inflow from operations to sales）
        收入现金比率 = 经营活动现金净流入/营业收入
        该比率反映了企业从每一元营业收入中所实现的净现金收入；从另一个角度分析，该比率体现了企业应收账款回收的效率。
        该比率越大，表明企业的收入质量越高，企业应收款回收的效率越高。
        """
        return self.report.cash_inflow_from_operations_to_sales()